﻿Imports System.Data
Imports System.Data.Odbc

Public Class frmGatunekMaterialu

    Private mvarChanged As Boolean = False
    Private mvarCancel As Boolean = False
    Private mvarGatunekMaterialu As clsInhGatunek
    Private mvarDbHolder As clsDataBase
    Private mvarWzynEdytowania As Boolean = False
    Private mvarBlokowanie As clsRecordLock
    Private mvarWyznBlokowania As Boolean = False
    Private mvarUzytkownik As clsUzytkownik

    Public Sub New(IdMaterial As Integer)

        ' To wywołanie jest wymagane przez projektanta.
        InitializeComponent()

        ' Dodaj inicjację po wywołaniu funkcji InitializeComponent().
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
        mvarUzytkownik = CType(clsUzytkownik.Instance(), clsUzytkownik)
        PobierzWszystkiStop()
        If IdMaterial = 0 Then
            mvarGatunekMaterialu = New clsInhGatunek
            WyczyscInformacje()
            mvarChanged = False
        Else
            mvarGatunekMaterialu = New clsInhGatunek(IdMaterial, mvarDbHolder)
            Blokowanie()
            Me.Text = "WIREMET - EDYCJA MATERIAŁU"
            UzupelnienieDanych()
            mvarWzynEdytowania = True
            mvarChanged = False
        End If

    End Sub

    Private Sub PobierzWszystkiStop()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsStop.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)
        cmbStop.Items.Clear()
        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbStop.Items.Add(New clsStop(CStr(lvarRow("id")), CStr(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")))))
            Next
        End If

    End Sub

    Private Sub Blokowanie()

        mvarBlokowanie = New clsRecordLock(VAR_CONNECTION_PARAMETERS, mvarGatunekMaterialu.Id, "oem.gatunek", VAR_ERROR_HANDLER, CInt(mvarUzytkownik.Id))
        mvarWyznBlokowania = True

        If Not mvarBlokowanie.RecordLocked Then
            MessageBox.Show("TYLKO DO ODCZYTU", "WIREMET")
            grbDane.Enabled = False
            cmdZapisz.Enabled = False
            cmdWyczysc.Enabled = False
        End If

    End Sub

    Private Sub Zapisz()

        If txtNazwaAmerykanska.Text.Length = 0 Then
            MessageBox.Show("Podaj nazwaę amerykańska.", "WIREMET")
            txtNazwaAmerykanska.Focus()
            mvarCancel = True
        Else
            mvarDbHolder.BeginTrans()
            With mvarGatunekMaterialu
                .Id = mvarGatunekMaterialu.Id
                .Nazwa = txtNazwaPolska.Text
                .NazwaAng = txtNazwaAmerykanska.Text
                .NazwaNiem = txtNazwaNiemiecka.Text
                .NormaWykonania = txtNorma.Text
                If cmbStop.SelectedIndex <> -1 Then
                    .StopId = CType(cmbStop.SelectedItem, clsStop).Id
                End If
                .Save(mvarDbHolder)
            End With

            mvarDbHolder.CommitTrans()
            If mvarWzynEdytowania = False Then
                WyczyscInformacje()
                mvarGatunekMaterialu = New clsInhGatunek
            End If
            mvarChanged = False
            mvarCancel = False
            MessageBox.Show("Zapisano do bazy", "WIREMET")
            txtNazwaAmerykanska.Focus()
        End If

    End Sub

    Private Sub WyczyscInformacje()

        txtNazwaPolska.Text = String.Empty
        txtNazwaAmerykanska.Text = String.Empty
        txtNazwaNiemiecka.Text = String.Empty
        txtNorma.Text = String.Empty
        cmbStop.SelectedIndex = -1

    End Sub

    Private Sub UzupelnienieDanych()

        Dim lvarIndex As Integer

        txtNazwaPolska.Text = mvarGatunekMaterialu.Nazwa
        txtNazwaAmerykanska.Text = mvarGatunekMaterialu.NazwaAng
        txtNazwaNiemiecka.Text = mvarGatunekMaterialu.NazwaNiem
        txtNorma.Text = mvarGatunekMaterialu.NormaWykonania
        lvarIndex = cmbStop.FindString(mvarGatunekMaterialu.NazwaStop.Nazwa)
        cmbStop.SelectedIndex = lvarIndex

    End Sub


    Private Sub cmdStop_Click(sender As Object, e As EventArgs) Handles cmdStop.Click
        Dim lvarFrm As New frmStop()
        With lvarFrm
            .ShowDialog()
        End With
        PobierzWszystkiStop()
    End Sub

    Private Sub cmdZapisz_Click(sender As System.Object, e As System.EventArgs) Handles cmdZapisz.Click
        If mvarChanged Then
            Zapisz()
        Else
            MessageBox.Show("Nie wprowadzono żadnych zmian.", "WIREMET")
        End If
    End Sub

    Private Sub cmdAnuluj_Click(sender As System.Object, e As System.EventArgs) Handles cmdAnuluj.Click
        mvarChanged = False
        Close()
    End Sub

    Private Sub cmdWyczysc_Click(sender As System.Object, e As System.EventArgs) Handles cmdWyczysc.Click
        WyczyscInformacje()
    End Sub


    Private Sub frmMaterial_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        If mvarWyznBlokowania Then
            If mvarBlokowanie.RecordLocked Then
                mvarBlokowanie.Unlock()
            End If
        End If
        mvarDbHolder.Close()
    End Sub

    Private Sub frmMaterial_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

        If mvarChanged Then
            Select Case MsgBox("Czy zapisać materiał do bazy?", MsgBoxStyle.YesNo, "WIREMET")
                Case MsgBoxResult.No
                Case MsgBoxResult.Yes
                    Zapisz()
                    If mvarCancel = True Then
                        e.Cancel = True
                    End If
            End Select
        End If

    End Sub


#Region "Tab"

    Private Sub txtNazwaAmerykanska_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtNazwaAmerykanska.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtNazwaPolska.Focus()
        End If
    End Sub

    Private Sub txtNazwaPolska_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtNazwaPolska.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtNazwaNiemiecka.Focus()
        End If
    End Sub

    Private Sub txtNazwaNiemiecka_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtNazwaNiemiecka.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtNorma.Focus()
        End If
    End Sub

    Private Sub txtNorma_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtNorma.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmbStop.Focus()
        End If
    End Sub

    Private Sub cmbStop_KeyPress(sender As Object, e As KeyPressEventArgs) Handles cmbStop.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmdZapisz.Focus()
        End If
    End Sub

#End Region

#Region "Changed"

    Private Sub txtNazwaPolska_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNazwaPolska.TextChanged
        mvarChanged = True
    End Sub

    Private Sub txtNazwaAmerykanska_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNazwaAmerykanska.TextChanged
        mvarChanged = True
    End Sub

    Private Sub txtNazwaNiemiecka_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNazwaNiemiecka.TextChanged
        mvarChanged = True
    End Sub

    Private Sub txtNorma_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNorma.TextChanged
        mvarChanged = True
    End Sub

    Private Sub cmbStop_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbStop.SelectedIndexChanged
        mvarChanged = True
    End Sub

#End Region


End Class